#include <iostream>
#include <stdlib.h>
struct MaxHeap
{
	int *heap; //数据元素存放的空间，下标从1开始存数数据，下标为0的作为工作空间，存储临时数据
	int HeapSize;//数据元素的个数
	int MaxSize; //存放数据元素空间的大小
    //构造函数
    
};
MaxHeap H;
 
void MaxHeapInit(MaxHeap &H)
{
	for(int i = H.HeapSize/2; i>=1; i--)
	{
		H.heap[0] = H.heap[i];
		int son = i*2;
		while(son <= H.HeapSize)
		{
			if(son < H.HeapSize && H.heap[son] < H.heap[son+1])
				son++;
			if(H.heap[0] >= H.heap[son])
				break;
			else
			{
				H.heap[son/2] = H.heap[son];
				son *= 2;
			}
            for (int j =1;j<11;j++){
                printf("%d ", H.heap[j]);
            }
            printf("\n");
		}
		H.heap[son/2] = H.heap[0];
	}
}

int main(){
    int a[]={4, 1, 3, 2, 16, 9, 10, 14, 8, 7};
    H.heap=a;
    H.HeapSize=10;
    H.MaxSize=15;
    MaxHeapInit(H);


    return 0;
}